package com.assistant.dao;

import com.assistant.domain.Userinfo;
import com.assistant.jdbc.DataBaseConn;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * 针对数据库中Userinfo表的操作类（增删改查）
 * Created with IntelliJ IDEA. 
 * User: YangKang 
 * Date: 13-11-6 
 * Time: 上午1:28 
 * To change this template use File | Settings | File Templates.
 */
public class UserinfoDao {

	/**
	 * 向数据库添加信息方法
	 * 
	 * @param user Userinfo对象
	 * @return 语句执行与否
	 */
	public boolean insert(Userinfo user) {
		try {
			// //定义添加写入数据库信息的 SQL 语句
			// String sql =
			// "insert into my_table(userId,userName,userPwd) value(" +
			// +user.getUserId() + ",'" + user.getUserName() + "','" +
			// user.getUserPwd() + "');";
			// //获取执行SQL 语句的对象
			// Statement stmt = DataBaseConn.createConn().createStatement();
			// int count = stmt.executeUpdate(sql);

			// 添加预编译写入数据库信息的 SQL 语句
			String sql = "insert into my_table(userId,userName,userPwd) value(?,?,?)";
			java.sql.PreparedStatement psmt = DataBaseConn.createConn()
					.prepareStatement(sql);

			// 设置？的值
			psmt.setInt(1, user.getUserId());
			psmt.setString(2, user.getUserName());
			psmt.setString(3, user.getUserPwd());

			// 执行SQL语句
			int count = psmt.executeUpdate();
			
			// 判断count是否大于0
			if (count > 0) {
				return true;
			}
		} catch (SQLException e) {
			e.printStackTrace(); // To change body of catch statement use File |
									// Settings | File Templates.
		}
		return false;
	}


	/**
	 * 更新数据数据库信息的方法
	 * 
	 * @param user  Userinfo对象
	 * @return 执行语句成功与否
	 */
	public boolean update(Userinfo user) {
		try {
			// 定义sql执行成功与否的标志
			boolean state = false;
			// 定义更新数据库信息的 SQL 语句
			String sql = "update my_table set userName=?,userPwd=? where userId=?";
			// 获取执行SQL 语句的对象
			java.sql.PreparedStatement psmt = DataBaseConn.createConn()
					.prepareStatement(sql);

			// 设置？的值
			psmt.setString(1, user.getUserName());
			psmt.setString(2, user.getUserPwd());
			psmt.setInt(3, user.getUserId());

			// 执行sql语句
			int count = psmt.executeUpdate();
			
			// 判断返回成功的条数，如果返回结果为0则表示数据删除失败，如果返回不为0则表示删除数据成功。
			if (count != 0) {
				state = true;// state修改为true
			}
			return state;
		} catch (Exception ef) {
			ef.printStackTrace();
		}
		return false;
	}

	/**
	 * 往数据库删除数据的方法
	 * @param user Userinfo对象
	 * @return 是否执行成功
	 */
	public boolean delete(Userinfo user) {
		try {
			// 定义删除数据库信息的 SQL 语句
			String sql = "delete from my_table where userId=?";
			// 获取执行SQL 语句的对象
			java.sql.PreparedStatement psmt = DataBaseConn.createConn()
					.prepareStatement(sql);

			// 设置？的值
			psmt.setInt(1, user.getUserId());

			// 执行sql语句
			int count = psmt.executeUpdate();

			if (count > 0) {
				return true;
			}
		} catch (Exception ef) {
			ef.printStackTrace();
		}
		return false;

	}

	/**
	 * 查询数据的方法
	 * 
	 * @return Userinfo数组
	 */
	public List<Userinfo> query() {
		try {
			// 定义添加写入数据库信息的SQL语句
			String sql = "select *from my_table";
			// 获取执行SQL 语句的对象
			Statement stmt = DataBaseConn.createConn().createStatement();
			// 调用 Statement对象执行SQL语句的方法
			ResultSet rs = stmt.executeQuery(sql);
			// 实例化一个集合对象
			List<Userinfo> list = new ArrayList<Userinfo>();

			// 循环 遍历
			while (rs.next()) {
				// 将结果集中的数据赋给 javaBean对象
				Userinfo user = new Userinfo(rs.getInt(1), rs.getString(2),
						rs.getString(3));
				list.add(user);
			}
			return list;
		} catch (SQLException e) {
			e.printStackTrace(); 
		}
		return null;
	}
	
	
	/**
	 * 按id查询数据的方法
	 * 
	 * @return Userinfo数组
	 */
	public List<Userinfo> query(int index) {
		try {
			// 定义添加写入数据库信息的SQL语句
			String sql = "select *from my_table where userId =?";
			// 获取执行SQL 语句的对象
			PreparedStatement pstmt = DataBaseConn.createConn().prepareStatement(sql);
			
			pstmt.setInt(1, index);
			
			// 调用 Statement对象执行SQL语句的方法
			ResultSet rs = pstmt.executeQuery();
			
			// 实例化一个集合对象
			List<Userinfo> list = new ArrayList<Userinfo>();

			// 循环 遍历
			while (rs.next()) {
				// 将结果集中的数据赋给 javaBean对象
				Userinfo user = new Userinfo(rs.getInt(1), rs.getString(2),
						rs.getString(3));
				list.add(user);
			}
			return list;
		} catch (SQLException e) {
			e.printStackTrace(); 
		}
		return null;
	}

}
